package org.rakam.automation.action; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.ImmutableMap; import org.rakam.automation.AutomationAction; import org.rakam.plugin.user.User; import org.rakam.util.StringTemplate; import java.util.Map; import java.util.Optional; import java.util.function.Supplier; public class ClientMessageAutomationAction implements AutomationAction<ClientMessageAutomationAction.Template> { public String process(String project, Supplier<User> user, Template data) { StringTemplate template = new StringTemplate(data.template); return template.format((query) -> { Object val = user.get().properties.get(query); if(val == null || !(val instanceof String)) { return data.variables.get(query); } return val.toString(); }); } public static class Template { public final String template; public final Map<String, String> variables; @JsonCreator public Template(@JsonProperty("template") String template, @JsonProperty(value = "variables", required = false) Map<String, String> variables) { this.template = template; this.variables = Optional.ofNullable(variables).orElse(ImmutableMap.of()); } } }